<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 题1.
        //3 + 2 +“7”的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？
        /* 3 + 2 +“7” // 57,string
        3 + (2 + "7") //327 ,string
        */

        // 题2.
        //6 - false的结果是什么？

        /* 6 */

        // 题3.
        //6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？

        /* NaN  ,  6false  */
        /* number, string */

        // 题4.
        //下面代码分别输出什么？请写出分析过程
        var a = 1;
        var b = ++a + ++a;
        console.log(b);

        /* 5 */

        //---上面和下面是两段代码---

        var a = 1;
        var b = a++ + a++;
        console.log(b);

        /* 3 */

        // 题5.
        //JS中哪些值通过Boolean对象转换出来的值为false
        /* 
        1.0
        2.Null
        3.NaN
        4.undefied
        5.空字符串
        */

        // 题6.
        //分析下面代码的结果并解释原因。
        var a = 1;
        var b = 2;
        console.log(a && b); //2
        console.log(a || b);//1
        // &&与短路运算 找假，找假的过程，只要碰到假值，就会断路，并返回该**假值**(不是false)，若没遇到假值，就返回最后一个真值
        // ||或短路运算 找第一个真值



        // 题7.
        //分析下面代码，分别输出什么？(以注释形式写在console.log后面)

        var str = "12306";
        var str1 = 1;
        var num = 12306;
        var boo = true;

        console.log(str == num);
        console.log(str === num);
        console.log(str1 == boo);
        console.log(str1 === boo);

        // 题8.
        // 请分析console.log(1 + - + + + - + -1)的结果？
        //  1 + (- + + + - + -1)  = 0


        // 题9.
        //分析下面代码，写出分析过程，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)

        var i = 100;
        i++; //100(101)
        j = i++; //102
        y = ++j; // 102(103)
        console.log(y);//102
        console.log(j);//102


        var a = true && "" && 12306;  // ""
        var b = false || "" || undefined || 12306 || "bluej"; //12306
        console.log(a); //""
        console.log(b);//12306

        // 提高题，非必做

        // - 写出执行结果,并解释原因

        var x = 1;
        if (function f() { console.log(123); }) {
            x += typeof f;
        }
        console.log(x) //1undefined

        /*
        猜测：
        ① typeof f ==  typeof object x
        ② typeof f ==  typeof function x
        ③ typeof f ==  typeof 123 x
        ④ typeof f ==  typeof (console.log(123) ) //123,undefined (字符串)
        最后思路：
        ④ typeof f ==  typeof (console.log(123) ) //123,undefined (字符串)
             x += undefined(字符串) = 1undefined
        */
    </script>
</body>

</html>